package nl.hu.vakantievibes.ui;

import java.util.ArrayList;
import java.util.Date;

import nl.hu.vakantievibes.client.ServerCall;
import nl.hu.vakantievibes.domain.Reis;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;

public class ShowReizen {

	VerticalPanel vp;
	HorizontalPanel hp, hp2;
	Label naamLabel, naamLabel2, naamLabel3, naamLabel4, naamLabel5, naamLabel6;
	Label locatieLabel, kostenLabel, datum;
	Label details;

	public ShowReizen() {

	}

	public Panel createPage() {
		vp = new VerticalPanel();
		hp2 = new HorizontalPanel();
		naamLabel2 = new Label("Reis:");
		naamLabel2.addStyleName("labelstyle2a");
		naamLabel3 = new Label("Plaats:");
		naamLabel3.addStyleName("labelstyle2a");
		naamLabel4 = new Label("Prijs:");
		naamLabel4.addStyleName("labelstyle2a");
		naamLabel5 = new Label("Datum:");
		naamLabel5.addStyleName("labelstyle2a");
		naamLabel6 = new Label("");
		naamLabel6.addStyleName("labelstyle2a");
		
		hp2.add(naamLabel2);
		hp2.add(naamLabel3);
		hp2.add(naamLabel5);
		hp2.add(naamLabel4);
		vp.add(hp2);
		
		getReizen();
		return vp;
	}

	public void getReizen(){	
		AsyncCallback<ArrayList<Reis>> callback = new AsyncCallback<ArrayList<Reis>>() {
			@Override
			public void onFailure(Throwable caught) {
				NotificationManager.get().createNotification("Er is een server fout opgetreden. De reizen konden niet worden opgehaald van de server.");
				GWT.log(caught.getMessage());
				caught.printStackTrace();
			}
			@Override
			public void onSuccess(ArrayList<Reis> result) {
				for(final Reis r : result){
					hp = new HorizontalPanel();
					naamLabel = new Label(r.getNaam()); 
					
					naamLabel.addStyleName("labelstyle1");
					locatieLabel = new Label(r.getPlaats() + "," + r.getLand()); 
					locatieLabel.addStyleName("labelstyle1");
					kostenLabel = new Label("\u20AC "  +  r.getPrijs() + "");
					kostenLabel.setStyleName("prijs");
					datum = new Label(changeDate(r.getVertrekDatum()) + " t/m " + changeDate(r.getAankomstDatum()));
					datum.addStyleName("labelstyle1");
					naamLabel.addStyleName("details-link");
					naamLabel.addClickHandler(new ClickHandler() {
						@Override
						public void onClick(ClickEvent event) {
							History.newItem("reisdetails-" + r.getNaam());
						}
					});
					
					
					hp.add(naamLabel);
					hp.add(locatieLabel);
				
					hp.add(datum);
					hp.add(kostenLabel);
					vp.add(hp);
				}
			}
		};
		new ServerCall().getAlleReizen(callback);
	}
	
	public String changeDate(Date dt)
	{
		DateTimeFormat dtf = DateTimeFormat.getFormat("dd-MM-yyyy");
		return dtf.format(dt);
	}
}